package com.qqtech.qquan.user.dao;

import java.util.List;

import com.qqtech.qquan.user.model.UserBaseConfig;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.qqtech.core.frame.dao.BaseDao;
import com.qqtech.qquan.user.model.UserBase;
import com.qqtech.qquan.user.model.UserBaseQuery;
import com.qqtech.qquan.user.model.UserBaseVo;

public interface UserBaseDao extends BaseDao<UserBase> {
	/**
	 * 加入社区的用户数量
	 * @param query
	 * @return
	 */
	public int queryCountNeighbor(UserBaseQuery query);
	
	/**
	 * 新加入社区的用户数量
	 * @param query
	 * @return
	 */
	public int queryCountIsNew(UserBaseQuery query);
	
	/**
	 * 加入社区的用户列表 
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<UserBaseVo> queryPageNeighbor(UserBaseQuery query, Pageable pageable);
	/**
	 * 加入社区的用户列表 
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<UserBaseVo> queryPageListJoinCommunity(UserBaseQuery query, Pageable pageable);
	/**
	 * 加入社区的用户数量
	 * @param query
	 * @return
	 */
	public int queryCountJoinCommunity(UserBaseQuery query);
	
	/**
	 * 通过帐号查询 记录数
	 * @param query
	 * @return
	 */
	public int queryCountByIdentity(UserBase query);
	
	/**
	 * 通过帐号查询 
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<UserBaseVo> queryPageListByIdentity(UserBase query, Pageable pageable);
	
	/**
	 * 后台-用户列表查询-分页
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<UserBaseVo> queryPageList4Admin(UserBaseQuery query, Pageable pageable);
	
	/**
	 * 后台-用户列表-数量查询
	 * @param query
	 * @return
	 */
	public int queryCount4Admin(UserBaseQuery query);

	/**
	 * 后台-用户列表查询-不分页
	 * @param query
	 * @param pageable
	 * @return
	 */
	public List<UserBaseVo> queryList4Admin(UserBaseQuery query, Pageable pageable);


	/**
	 * 社区的某时间段新加入数量
	 * @param query
	 * @return
	 */
	public int queryCountIsNewByCommunityId(UserBaseQuery query);

	/**
	 * 查询用户职业属性列表
	 * @return
	 */
	public List<UserBaseConfig> queryUserConfigProfession() ;

	/**
	 * 查询用户爱好属性列表
	 */
	public List<UserBaseConfig> queryUserConfigHobby() ;

	/**
	 * 查询用户美食属性列表
	 */
	public List<UserBaseConfig> queryUserConfigDelicacy() ;

	/**
	 * 查询用户故乡属性列表
	 */
	public List<UserBaseConfig> queryUserConfigHometown() ;

	/**
	 * 查询用户娱乐属性列表
	 */
	public List<UserBaseConfig> queryUserConfigEntertainment();
}
